Unity Editor のupdate callbackがYosemiteで減速する現象に勝つ


概要

Mac OS 10.10 Yosemiteでまじめに頑張ってこなかったので気づくのが遅れたが、

条件を満たすとUnity Editor のupdate callback の呼ばれる頻度や、

それ以外のtimer系のThread挙動も軒並みヘタレていくのの原因と解消法が分かったので書く。


まず間違いなく俺以外困ってないはず。



トリガー

次の条件を満たすと、だんだんUnity Editorのあらゆるタイマー的な動作がスローダウンしていく。

・Unity Editor をGUIありで起動中

・フォーカスをUnity Editor以外にあてる

・時間経過(20秒以上経過)


スローダウンの具体的な内容

以下のようなことが起きる。

・Editorの update callback が100回/秒なのが1回/秒まで減速、ヘタレる

・自発的にセットした0.1秒に1回のTimerThreadとかも例外ではなくヘタレる



回復手段

Unity Editor にフォーカスを当てると戻る。

が、フォーカスを離すとまた減速する。



原因と回避手段

OS X 10.9 Mavericksから追加された機能 App Nap が、Yosemiteになって凶悪になっていたのが原因。

OS X 10.9 時はフォーカス外しただけだとApp Napの発動条件を満たすことはなかったようなのだが、

OS X 10.10 以降はフォーカス外すと即App Nap対象になるようだ。

アプリケーションがApp Nap状態に入ると、どんな動作条件を決めたものであろうとひたすら減速するようだ。

回避方法はメッチャ単純で、App Napになってほしくないアプリケーション.app > 情報を見る > App Napを切にする でおわり。

スクリーンショット 2015-03-04 3.31.32.png


はい。


こんなよくわかんないIssueにつきあってくれたUnity Japanの方、どうもありがとうございました。